#===istalismanplugin===
# -*- coding: utf-8 -*-

# $Revision: 58 $
# $Author: rchiganov@gmail.com $
# $Date: 2013-12-14 19:10:32 +0000 (Sat, 14 Dec 2013) $

#---------------------------------------------------------------------------------------------------

# Initial Copyright © 2007 Als <Als@exploit.in>
# Help Copyright © 2007 dimichxp <dimichxp@gmail.com>

#---------------------------------------------------------------------------------------------------

import time

#---------------------------------------------------------------------------------------------------

sendqueue = {}

def send_save ( type, source, parameters ):
	if not GROUPCHATS.has_key(source[1]):
		reply(type, source, u'эта команда доступна только в конференции')
		return
	groupchat = source[1]
	nicks = GROUPCHATS[groupchat].keys()
	args = parameters.split(' ')
	date=time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime())
	fromnick=source[2]+u' из '+source[1]+u' в '+date+u' (UTC) попросил меня передать тебе следующее:\n\n'
	if len(args)>=2:
		nick = args[0]
		body = ' '.join(args[1:])
		if nick == 'botadmin':
			reply(type, source, u'передам')
			msg(ADMINS[0], fromnick+body)
			return
		if get_bot_nick(groupchat) != nick:
			if not nick.count(u'@'):
				tojid = get_true_jid(groupchat+'/'+nick)
			else:
				tojid = nick
			if nick in nicks and GROUPCHATS[groupchat][nick]['ishere']==1:
				reply(type, source, u'он тут сидит')
			else:
				if not groupchat in sendqueue:
					sendqueue[groupchat]=groupchat
					sendqueue[groupchat]={}
				if not tojid in sendqueue[groupchat]:
					sendqueue[groupchat][tojid] = tojid
					sendqueue[groupchat][tojid] = []
				sendqueue[groupchat][tojid].append(fromnick+body)
				reply(type, source, u'как зайдёт, передам...')
				if check_file(groupchat,file='send.txt'):
					sendfp='dynamic/'+groupchat+'/send.txt'
					write_file(sendfp,str(sendqueue[groupchat]))
				else:
					print 'send_plugin.py error'
					pass

def handler_send_join(groupchat, nick, aff, role):
	tojid = get_true_jid(groupchat+'/'+nick)
	if groupchat in sendqueue:
		if sendqueue[groupchat].has_key(tojid) and sendqueue[groupchat][tojid]:
			for x in sendqueue[groupchat][tojid]:
				msg(tojid, x)
			sendqueue[groupchat][tojid] = []
			if check_file(groupchat,file='send.txt'):
				sendfp='dynamic/'+groupchat+'/send.txt'
				write_file(sendfp,str(sendqueue[groupchat]))
			else:
				print 'send_plugin.py error'
				pass
	else:
		pass
		
def get_send_cache(gch):
	sfc='dynamic/'+gch+'/send.txt'
	if not check_file(gch,'send.txt'):
		print 'error with caches in send_plugin.py'
		raise
	try:
		cache = eval(read_file(sfc))
		sendqueue[gch]={}
		sendqueue[gch]=cache
	except:
		pass	

#---------------------------------------------------------------------------------------------------

register_join_handler(handler_send_join)
register_stage1_init(get_send_cache)

register_command_handler(send_save, 'передать', [ 'мук', 'все' ], 10, 'Запоминает сообщение в базе и передаёт его указанному нику как только он зайдёт в конференцию.', 'передать <кому> <что>', [ 'передать Nick привет! забань Nick666' ])

#---------------------------------------------------------------------------------------------------